home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / gfx / edit / AmiCAD_2.06.lha / AmiCAD / ARexx / Centrer.AmiCAD < prev    next >
Text File  |  2000-04-16  |  2KB  |  88 lines

  1. /* Centrage de la référence et de la valeur d'un composant.
  2. Version 1.00: 11 août 1998
  3. Version 1.01: 13 avril 2000 (modif gestion SAVEALL, OBJECTS)
  4. Version 1.02: 16 avril 2000 (amélioration placement)
  5. $VER: Centrer.AmiCAD 1.02, © R.Florac, 16 avril 2000 */
  6.  
  7. options results
  8.  
  9. signal on error
  10. signal on syntax
  11.  
  12. nc=0; objet=1
  13. 'SAVEALL:OBJECTS'; objets=result
  14. do while objet>0
  15.     'O=FINDOBJ('objet',1,-1,-1)'; objet=result
  16.     if objet>0 then do
  17.     'TEST(O)'
  18.     if result>0 then do
  19.         nc=nc+1
  20.         call centrer(objet)
  21.     end
  22.     objet=objet+1
  23.     if objet>objets then objet=0
  24.     end
  25. end
  26.  
  27. if nc=0 then do
  28.     'MESSAGE("Sélectionnez d''abord"+CHR(10)+"l''objet à arranger")'
  29.     exit
  30. end
  31.  
  32. exit
  33.  
  34. centrer: procedure
  35.     parse arg o
  36.     'GETPOS(O='o')'; p=result
  37.     'R=GETREF(O)'
  38.     ref=result
  39.     'V=GETVAL(O)'
  40.     val=result
  41.     if ref>0 then do
  42.     if val=0 then do
  43.         if p=1 | p=3 then do
  44.         'MOVE(R,0,LINE(O)-LINE(R)+(HEIGHT(O)+HEIGHT(R))/2)'
  45.         end
  46.         else do
  47.         'MOVE(R,COL(O)-COL(R)+(WIDTH(O)-WIDTH(R))/2,0)'
  48.         end
  49.     end
  50.     else do
  51.         if p=1 | p=3 then do
  52.         'MOVE(R,0,LINE(O)-LINE(R)+HEIGHT(O)/2)'
  53.         end
  54.         else do
  55.         'MOVE(R,COL(O)-COL(R)+(WIDTH(O)-WIDTH(R))/2,0)'
  56.         end
  57.     end
  58.     end
  59.     if val>0 then do
  60.     if ref=0 then do
  61.         if p=1 | p=3 then do
  62.         'MOVE(V,0,LINE(O)-LINE(V)+(HEIGHT(O)+HEIGHT(V))/2)'
  63.         end
  64.         else do
  65.         'MOVE(V,COL(O)-COL(V)+(WIDTH(O)-WIDTH(V))/2,0)'
  66.         end
  67.     end
  68.     else do
  69.         if p=1 | p=3 then do
  70.         'MOVE(V,0,LINE(O)-LINE(V)+(HEIGHT(O)+3*HEIGHT(V)/2)/2)'
  71.         end
  72.         else do
  73.         'MOVE(V,COL(O)-COL(V)+(WIDTH(O)-WIDTH(V))/2,0)'
  74.         end
  75.     end
  76.     end
  77. return
  78.  
  79. /* Traitement des erreurs, interruption du programme */
  80. syntax:
  81. erreur=RC
  82. 'MESSAGE("Script Centrer.AmiCAD"+CHR(10)+"Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
  83. exit
  84.  
  85. error:
  86. 'MESSAGE("Script Centrer.AmiCAD"+CHR(10)+"Erreur en ligne 'SIGL'")'
  87. exit
  88.